#ifndef CARDPANEL_H
#define CARDPANEL_H

#include <QWidget>
#include "card.h"
#include "player.h"

class CardPanel : public QWidget
{
    Q_OBJECT
public:
    explicit CardPanel(QWidget *parent = nullptr);

    //设置图片的函数
    void setImage(const QPixmap &front, const QPixmap &back);//只是将图片传进来，并不能直接显示
    QPixmap getImage();

    //扑克牌显示哪一面，flag==true显示正面，flag==false显示背面
    void setFrontSide(bool flag);
    bool isFrontSide();

    //记录当前窗口是否被选中了

    void setSeclected(bool flag);
    bool isSelected();

    // 扑克牌的花色以及点数
    void setCard(const Card& card);
    Card getCard();

    // 扑克牌的所有者
    void setOwner(Player* player);
    Player* getOwner();
    
    // 模拟扑克牌的点击事件
    void clicked();

protected:
    //将图片绘制出来，要添加一个事件处理器函数
    void paintEvent(QPaintEvent *event);
    void mousePressEvent(QMouseEvent* event); //重写鼠标按下的响应事件

signals:
    void cardSelected(Qt::MouseButton button); //鼠标按键信号
private:
    QPixmap m_front;
    QPixmap m_back;
    bool m_isfront = true;  //表示当前窗口是哪一面
    bool m_isSelect = false;  //表示当前窗口是否被选中
    Card m_card;   //扑克牌花色和点数
    Player* m_owner = nullptr; //扑克牌所有者
};

#endif // CARDPANEL_H
